package com.edu.compile.compiler;


import com.edu.compile.AbstractCompileResult;
import com.edu.compile.AbstractCompilerParser;
import com.edu.compile.config.TripartiteApiConfig;
import com.edu.compile.template.ftl.node.TripartiteApi;
import com.edu.model.dto.NodeMetadata;
import org.springframework.stereotype.Component;

@Component("tripartite_api_compiler")
public class TripartiteApiCompiler extends AbstractCompilerParser<TripartiteApiConfig, TripartiteApi> {

    @Override
    public void compile(AbstractCompileResult abstractCompileResult, NodeMetadata nodeMetadata, TripartiteApiConfig tripartiteApiConfig, TripartiteApi tripartiteApi) {

//        boolean loop = abstractCompileResult.isLoop();
//        CompileResult compileResult = (CompileResult) abstractCompileResult;
//        Api api = compileResult.getEventContainer().getNodeTemplateModel(apiNodeDto.getNodeId());
//        api.setLoop(loop);
//
//        ApiParam apiParam = apiNodeDto.getApiParam();
//        String methodPrefix = getMethodPrefix(eventId);
//        String nodeId = apiNodeDto.getNodeId();
//        String method = apiParam.getMethod();
//        String params = apiParam.getParams();
//        String apiUrl = apiParam.getApiUrl();
//        api.setRemoteUrl(apiUrl);
//        api.setMethod(method);
//
//        String encode = apiParam.getEncode();
//        String contentType = apiParam.getContentType();
//        api.setContentType(contentType);
//
//        StringBuilder buffer = new StringBuilder(50);
//        buffer.append("let content = {};");
//
//        String headers = "";
//
//        if (EventConstant.ContentTypeConstant.JSON.equals(contentType)) {
//            if (!StringUtils.isBlank(params)) {
//                Map<String, String> result = parseParams(abstractCompileResult, params, methodPrefix, "content.");
//                buildJsonParam(buffer, result, "content");
//            }
//            headers = "{'content-type': 'application/json;charset=" + encode + "'}";
//        } else {
//            if (!StringUtils.isBlank(params)) {
//                Map<String, String> result = parseParams(abstractCompileResult, params, methodPrefix, "");
//                buildFormParam(buffer, result, "content");
//            }
//            headers = "{'content-type': 'application/x-www-form-urlencoded;charset=" + encode + "'}";
//        }
//        api.setHeaders(headers);
//        api.setParamJsCode(buffer.toString());
//        next(abstractCompileResult, eventId, nodeId);
    }
}
